Diagnostics and resolution mining architecture

ABSTRACT

A system and method for automatically modifying a configurable system based on proposed changes calculated using a corresponding model network. The model network includes a plurality of nodes representing the elemental attributes of the configurable system as well as correlations between the nodes. Upon detection of one or more nodes having node values outside of a predetermined operating range, a proposed change for the configurable system is calculated and can be implemented with little or no intervention by users of the configurable system.

CROSS-REFERENCE TO RELATED APPLICATIONS

Not applicable.

STATEMENT REGARDING FEDERALLY SPONSORED RESEARCH OR DEVELOPMENT

Not applicable.

BACKGROUND

Advances in computing technology have allowed for the formation ofincreasingly large and/or complicated computer systems and networks. Thespeed of communication between various network elements also furtherblurs the line between what can be considered as a single computer andwhat is a network. Multiple processors, storage areas, input devices,and display devices can be connected to a single network and operated asa single computing machine.

The increasing complexity of networked computing devices has also led todifficulties in maintaining network performance at desired levels. Eachincrease in network complexity reduces the likelihood that an untraineduser will be able to diagnose and/or resolve a problem occurring on anetwork. As a result, technical experts are increasingly in demand fortroubleshooting networks and maintaining optimal performance.

Network diagnostic tools can be used to aid technical experts inidentifying and resolving problems. In a model network, variousproperties of the real network can be modeled as nodes in the modelnetwork. Unfortunately, the model network still requires someone, suchas a technical expert, to view any data or results produced by the modelnetwork and to implement any modeled changes into the real network.

SUMMARY

In various embodiments, a system and method is provided for analyzingthe performance of a configurable system, determining a change to theconfigurable system to improve performance, and implementing theproposed change. The configurable system can represent a computernetwork, a business organization, or other systems that can berepresented by a model network of correlated nodes. The model network isused to identify changes to directly modifiable attributes of theconfigurable system that will lead to improved performance. Inadditional embodiments, a system and method is provided for updating thecorrelation values used in the model network.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram illustrating an overview of a system inaccordance with an embodiment of the invention;

FIG. 2 is block diagram illustrating a computerized environment in whichembodiments of the invention may be implemented;

FIG. 3 is schematic representation of relationships between variouselements of a configurable system according to an embodiment of theinvention.

FIG. 4 is a schematic representation of a model network according to anembodiment of the invention.

FIG. 5 is a sample iterative calculation to for determining proposedchanges to node values according to an embodiment of the invention.

FIG. 6 is a flow chart illustrating a method for modifying aconfigurable system according to an embodiment of the invention.

FIG. 7 is a flow chart illustrating a method for modifying a modelnetwork according to an embodiment of the invention.

DETAILED DESCRIPTION I. Overview

What is needed is a system and method for determining and implementingchanges for a real network based on node values in a model network andimplementing the changes. The method should be compatible with variousnetwork problems, including but not limited to computer networks. Themethod should further allow for automatic updating of the model networkbased on performance data aggregated from one or more real networks.When data from multiple networks is aggregated, the method shouldaccommodate data from networks having different node connectivities.

More generally, what is needed is a system and method for determiningand implementing changes to a system or object with a complexorganizational or network structure. The system and method shouldprovide a model to capture the interactions between various parts of thecomplex organization or network. The model can then be used to identifychanges that will lead to improved performance for the system or object.

This invention provides a system and method for changing theconfiguration of a network to improve performance in the form of aDiagnostics and Resolution Mining Architecture (DRMA). When theperformance of a configurable system is outside of a desired operatingrange, the invention provides a method for generating a change in thenetwork configuration to remove or lessen the impairment. In anembodiment, the change can be implemented automatically, without anyintervention from a user such as a technical expert. Because no userintervention is required, the amount of time needed to resolve a networkperformance issue can be minimized. Alternatively, the required changecan be determined automatically and then implemented after notifying adesignated user.

In another embodiment, the invention provides a system and method fordetermining a change to a network or organization. Based on a modelshowing relationships between various parts of the network ororganization, a change leading to improved performance for the networkor organization is determined. This change can then be automaticallyimplemented, or recommended to an appropriate person (such as a user,manager, etc.) for implementation.

The invention also provides a method for modifying a node-based networkmodel. This is accomplished by accumulating data on measured networkperformance data for one or more networks. The accumulated data isanalyzed to determine the appropriate correlation factor between nodesthat are correlated in the model. Thus, once the initial types ofnetwork correlations are defined, the correlation factors can beoptimized so that the model reflects the actual network behavior asaccurately as possible. In an embodiment, changes to one or morecorrelation factors in the model can be implemented without interventionby a technical expert. Alternatively, potential changes can bedetermined and then implemented after notifying a designated user.

In an embodiment involving a configurable system, such as a SQL networkor other computer network, the invention is implemented using a modelnetwork having one or more nodes. The nodes of the model networkrepresent the physical and behavioral characteristics of theconfigurable system, such as the CPU utilization of the network or theamount of memory allocated to each process running on the network. Somenodes are indicators of performance while other nodes representchangeable features of the corresponding configurable system. Each nodein the model network is correlated with one or more other nodes to formcorrelated node pairs. These correlations represent the directrelationships between various nodes in terms of how a change in thevalue of one node results in a change, or trade-off, in the value ofanother node. A correlation value is assigned to each correlated nodepair to indicate the type and magnitude of the correlation. Nodes whichindicate the performance of the network can be assigned one or moreupper or lower threshold values. When a node exceeds an upper thresholdvalue (or falls below a lower threshold value), it indicates that thenetwork is no longer performing in a desired manner. When a node exceeds(or falls below) a threshold value, a proposed change to one or more ofthe changeable features of the system is determined using the modelnetwork. If a proposed change can be found that returns all nodes of thenetwork to within their desired operating ranges, the change isimplemented to the configurable system.

In another embodiment, the invention can be implemented for anorganization, such as a large business. In such an embodiment, the modelnetwork can have nodes corresponding to the physical and behavioralcharacteristics of the organization. The nodes can correspond to bothperformance indicators for the organization as well as characteristicsof the organization that can be directly modified. For example, variousnodes could represent stored raw materials, inventory of finished goods,or the number of workers assigned to a business function. Based on therelationships between nodes in the model, changes leading to improvedperformance can be identified and then either proposed to an appropriateparty (such as a manager), or possibly implemented automatically.

II. General Operating Environment

FIG. 1 illustrates a system for using a model network to propose and/orautomatically implement changes to a configurable system according to anembodiment of the invention. One or more configurable systems, such asconfigurable systems 30, 40, and 50, can be connected via a network 20to a system optimizer 70. Network 20 can represent a local area network,a wide area network, or any other type of network suitable for allowinga configurable system to communicate with system optimizer 70.

The configurable system optimizer 70 can include a model network builder81 for constructing a model network of nodes and configuration switchesto represent a configurable system 30, 40, or 50. The configurablesystem optimizer 70 can also include a data aggregator 83 for gatheringnode value data for nodes in a model network based on a correspondingconfigurable system. Data collected by data aggregator 83 can be storedlocally or stored in a data warehouse 90. The configurable systemoptimizer 70 can further include a solution generator 85 for calculatingproposed changes to configuration switches based on a model networkcorresponding to a configurable system 30, 40, or 50. The configurablesystem optimizer 70 can also include one or more system monitors 87 fortracking node values in a configurable system and detecting when aconfigurable system is operating outside of a desired range.Additionally, a correlation analyzer 88 can be included to analyzeaggregated node value data and to provide revised correlation nodevalues for use in a model network. Note that the components ofconfigurable system optimizer 70 are shown as being part of a singlesystem for convenience. In another embodiment one or more of thecomponents of configurable system optimizer 70 could be located at oneor more different locations and connected via network 20.

FIG. 2 illustrates an example of a suitable computing system environment200 for implementing geographic based searching according to theinvention. The computing system environment 100 is only one example of asuitable computing environment and is not intended to suggest anylimitation as to the scope of use or functionality of the invention.Neither should the computing environment 200 be interpreted as havingany dependency or requirement relating to any one or combination ofcomponents illustrated in the exemplary operating environment 200.

The invention is described in the general context of computer-executableinstructions, such as program modules, being executed by a computer.Generally, program modules include routines, programs, objects,components, data structures, etc. that perform particular tasks orimplement particular abstract data types. Moreover, those skilled in theart will appreciate that the invention may be practiced with othercomputer system configurations, including hand-held devices,multiprocessor systems, microprocessor-based or programmable consumerelectronics, minicomputers, mainframe computers, and the like. Theinvention may also be practiced in distributed computing environmentswhere tasks are performed by remote processing devices that are linkedthrough a communications network. In a distributed computingenvironment, program modules may be located in both local and remotecomputer storage media including memory storage devices.

FIG. 2 is a block diagram illustrating an exemplary computer systemsuitable for implementing a trade-off/semantic network. In someexamples, computer system 200 may be used to implement theabove-described techniques. Computer system 200 includes a bus 202 orother communication mechanism for communicating information, whichinterconnects subsystems and devices, such as processor 204, systemmemory 206 (e.g., RAM), storage device 208 (e.g., ROM), disk drive 210(e.g., magnetic or optical), communication interface 212 (e.g., modem orEthernet card), display 214 (e.g., CRT or LCD), input device 216 (e.g.,keyboard), and cursor control 218 (e.g., mouse or trackball).

According to one embodiment of the invention, computer system 200performs specific operations by processor 204 executing one or moresequences of one or more instructions contained in system memory 206.Such instructions may be read into system memory 206 from anothercomputer readable medium, such as static storage device 208 or diskdrive 210. In alternative embodiments, hard-wired circuitry may be usedin place of or in combination with software instructions to implementthe invention.

The term “computer readable medium” refers to any medium thatparticipates in providing instructions to processor 204 for execution.Such a medium may take many forms, including but not limited to,non-volatile media, volatile media, and transmission media. Non-volatilemedia includes, for example, optical or magnetic disks, such as diskdrive 210. Volatile media includes dynamic memory, such as system memory206. Transmission media includes coaxial cables, copper wire, and fiberoptics, including wires that comprise bus 202. Transmission media canalso take the form of acoustic or light waves, such as those generatedduring radio wave and infrared data communications.

Common forms of computer readable media includes, for example, floppydisk, flexible disk, hard disk, magnetic tape, any other magneticmedium, CD-ROM, any other optical medium, punch cards, paper tape, anyother physical medium with patterns of holes, RAM, PROM, EPROM,FLASH-EPROM, any other memory chip or cartridge, carrier wave, or anyother medium from which a computer can read.

In an embodiment of the invention, execution of the sequences ofinstructions to practice the invention is performed by a single computersystem 200. According to other embodiments of the invention, two or morecomputer systems 200 coupled by communication link 220 (e.g., LAN, PSTN,or wireless network) may perform the sequence of instructions topractice the invention in coordination with one another. Computer system200 may transmit and receive messages, data, and instructions, includingprogram, i.e., application code, through communication link 220 andcommunication interface 212. Received program code may be executed byprocessor 204 as it is received, and/or stored in disk drive 210, orother non-volatile storage for later execution.

III. Network Nodes and Node Correlations

In an embodiment, a precursor to performing the method of this inventionis providing a model that represents a configurable system. The modelrepresents the configurable system or network as a plurality of nodes.The nodes can represent any desired behavior, characteristic, or riskassociated with the network.

Each node in the model network is also correlated with one or more othernodes. These correlations, or trade-offs, describe the behavior of thenetwork nodes when a node value is modified. The correlation between apair of nodes is preferably a direct correlation or an inversecorrelation, but other arbitrary algebraic functions can also be used.In an embodiment, the nodes in a model network are defined so thateither one or zero trade-off relationships exist between any pair ofnodes. Nodes that have at most one trade-off relationship with eachother nodes can be referred to as “elemental” nodes.

One type of node used to represent the configurable system is anindicator node. An indicator node represents a measurable performancecharacteristic of the configurable system. As an example, an SQL networkor other computer network can be the configurable system represented bythe model network. A single physical component of the configurablesystem, such as the central processing unit, can correspond to multipleindicator nodes in the model network, such as CPU speed, CPU cache size,and CPU utilization. Other examples of indicator nodes can include thenumber of users on the system, the memory paging rate (use of disk spaceas temporary memory), or a data transfer rate through a particulardevice, router, or gateway in a network. Each node can have an arbitraryrange of node values, such as binary values (representing ON/OFF or0/1), a range from 0.0 to 100.0, a range including negative values, orany other convenient range of values for representing a node value. Inan alternative embodiment, some or all node values in a system can benormalized to have a value between 0 and 100.

A second type of node in the configurable system is a configurationswitch. A configuration switch represents an aspect of the configurablesystem that can be directly modified. In an example where theconfigurable system is a computer network, configuration switches caninclude operating system settings, such as the amount of disk spaceavailable for paging, the minimum memory size allocated to each processspawned in the system, or the maximum number of processes that can runconcurrently on a CPU. Configuration switches can also include systemflags that either enable or disable some feature or behavior in thesystem. Note that a node can serve as both a configuration switch and anindicator node.

In another embodiment, the configurable system can also include one ormore risk nodes. A risk node is a node that indicates whether theconfigurable system is operating in a stable or “safe” manner. If one ormore node values of the configurable system are modified so that thesystem is in an unusual or unstable operation state, one or more risknodes would indicate the unusual state. These modifications to the nodevalues can represent changes in the system behavior due to systemoperation, or the node value changes can be due to a proposed change inone or more configuration switches. Alternatively, rather than havingexplicit risk nodes in the model system, risks can be calculated alongwith a proposed change to one or more configuration switches. The riskvalue of a proposed change is then indicated along with the proposedchange. Proposed changes with lower risk values are generally preferredrelative to changes with high risk values.

Each of the indicator nodes in a representation of a configurable systemcan have one or more threshold values associated with the node. Athreshold value for a node represents a node value indicating poor orunusual performance for the configurable system. For node values abovethe threshold value associated with an indicator node, the configurablesystem would be considered to have poor performance. A threshold valuecan represent a minimum value that the node value should stay above or amaximum value that the node value should stay below. A node can havemultiple threshold values, to accommodate having either both a minimumand a maximum, or possibly to specify multiple discrete ranges ofacceptable node values for a single node. For example, consider a nodehaving normalized values between 0 and 100. The possible values for sucha node can be broken down into several ranges. The middle range from20-80 can represent a predetermined desired operating range for thenode. For such a node, both 20 and 80 represent thresholds. For valuesbelow 20 the node is outside of the predetermined operating rangebecause it is lower than a threshold value. Similarly, the node isoutside of the predetermined operating range above 80 due to exceeding athreshold.

In the above description, nodes are described as either being within adesired operating range or being outside of the desired range. Inanother embodiment, additional designations can be used to describe nodebehavior, so that a node has multiple thresholds indicating differentlevels of problem. For example, for node values outside of the desiredoperating range, separate thresholds can be used to indicate a mildproblem, an intermediate problem, or a severe problem. In still anotherembodiment, one or more node thresholds can be used to indicate aproblem based on multiple nodes exceeding a threshold.

In a preferred embodiment, one or more indicator nodes have a pluralityof thresholds, such as having at least a first upper threshold, a secondupper threshold, and a third upper threshold. A predetermined node valuerange can be selected so that node values below the first upperthreshold are within the desired operating range, or node values belowthe second upper threshold, or node values below the third upperthreshold. In another embodiment, one or more indicator nodes can have aplurality of thresholds, such as having at least a first lowerthreshold, a second lower threshold, and a third lower threshold. Apredetermined node value range can be selected so that node values abovethe first lower threshold are within the desired operating range, ornode values above the second lower threshold, or node values above thethird lower threshold.

FIG. 3 illustrates an exemplary model network for representing aconfigurable system. In general, model network 300 is a mapping oftrade-offs in a configurable system between various resources expressedas a collection of nodes. Model network 300 includes several examples ofboth indicator nodes and resource nodes. Elemental attributes includeabstract representations of real-world system attributes such asperformance characteristics, system or component parameters,environmental conditions, or the like. In other examples, elementalattributes may also be described as having a single value dimension. Theconfigurable system represented by model network 300 is a fragment of anoverall larger configurable system. In this example, a web-like ortrade-off graph is shown, illustrating various elemental attributesassociated with a computer system. Elemental attributes 302-316represent basic aspects of a computer system such as hard drive stress,battery charge, random access memory (RAM) stress, size of RAM, memorypaging, central processing unit (CPU) stress, CPU speed (expressed inmegahertz, MHz), and cost of hardware. In other examples, configurablesystem 300 may be used to map other types of systems other than acomputer system. Systems, devices, apparatus, logical structures, andother complex decision-making environments may be mapped, managed, andmanipulated using configurable system 300.

Trade-off relationships 318-334 are shown between each of elementalattributes 302-316. These relationships illustrate basic characteristicsof trade-offs between system resources or components when values forelemental attributes are adjusted. In some cases, modifying the value ofa single elemental attribute may cause the value of an elementalattribute associated with a trade-off relationship to be affected in adirectly proportional or inversely proportional manner. In the case ofdirectly proportional relationships, the relationship between twoelemental attributes is such that as the value of the first elementalattribute increases, the value of the second elemental attribute alsoincreases. In the case of indirectly proportional relationships, therelationship between the two elemental attributes is such that as thevalue of the first elemental attribute increases, the value of thesecond elemental attribute decreases. In either case, the reverse may betrue. In either case, the impact of modifying the value of one elementalattribute on another node may be referred to as an “affect.” Affects mayalso be described in terms of the direction or strength of a trade-offrelationship. Trade-off relationships may also be described asunidirectional or bidirectional. In the case of unidirectionalrelationships, modifying the value of one elemental attribute has anaffect on another elemental attribute, but not vice versa. Forbidirectional relationships, two elemental attributes may affect eachother across a trade-off relationship in either direction. In otherwords, a bidirectional relationship enables, for example, elementalattribute 306 to affect elemental attribute 310 and vice versa. Byestablishing a trade-off graph using elemental attributes connectedthrough trade-off relationships, a system may be mapped to determine theparticular effects changing one or more elemental attributes of aspecific configuration.

IV. Automated Improvements to the Performance of a Configurable System

In an embodiment, the node and correlation information contained in amodel network can be used to automatically change the settings in aconfigurable system. This allows problems that develop in theconfigurable system to be remedied without waiting for intervention by aperson such as a technical expert. Instead, once a problem isidentified, a solution can be determined automatically and implementedin the configurable system. In an alternative embodiment, the inventioncan be used to determine and propose a change in the settings of aconfigurable system. A user of the system can then be notified of theproposed change before it is implemented.

In an embodiment, the configurable system is monitored to provideupdated node values for the various indicator nodes in the modelnetwork. Node values can be updated periodically, continuously, or inany other convenient manner. When a node value falls outside of adesired range for a specified time period, such as by exceeding/fallingbelow a threshold value, the configurable system is considered to beoperating with lower performance. Alternatively, the node can bereferred to as showing “pain” in the model network. A change to thesystem configuration is then determined so that all nodes in the modelnetwork are within the desired ranges (i.e., no node has any “pain.”)

In another embodiment, node values corresponding to the configurablesystem can be determined after receiving a notification from a user ofthe system, such as a complaint or another indication that theconfigurable system is performing poorly.

To determine an appropriate change to the system configuration,information about the nature of the pain is collected. The collectednode values can be extracted from any convenient source, such as one ormore logs dedicated to recording the values of a single node, one ormore general system logs that include a desired node value, one or morededicated logs for storing node values during times when poor systemperformance is detected, or a combination of any of the above. In anembodiment, recent information for all nodes in the system can becollected. In another embodiment, information is collected regardingonly a subset of nodes. In such an embodiment, one or more recent nodevalues for each node that is outside of normal operation is collected.The node values for one or more nodes that are logically close to thenode having “pain” can also be collected.

In still another embodiment, node values are selected for collectionbased on a description provided in a complaint message provided by asystem user. In such an embodiment, the complaint message is analyzed todetermine a general problem type. For example, the complaint message caninclude a predetermined series of flags or check boxes that a messagesender can use to describe a problem. Alternatively, the complaintmessage can be scanned for keywords indicating a general problem type.Based on the general problem type, a database or list is consulted todetermine the node values that have been previously useful in resolvingthe general problem type. Recent values for these nodes are thencollected.

The identity of the collected nodes, as well as the node values, canthen be compared to the node values associated with previous systemconfiguration changes. The node values from one or more previous systemconfiguration changes can be stored in a database. If the currentpattern of node values matches the pattern of a previous system painstored in the database, the previous solution can be selected to attemptto resolve the pain.

If a previous solution cannot be found in the database, a configurationchange is determined that resolves the pain. In an embodiment, aconfiguration change is determined using an iterative process. Forexample, a configuration change resolving the pain can be found using agenetic algorithm. In a genetic algorithm, the current state of thenodes in the model network is used as an initial guess. This initialguess serves as the first “parent” in the genetic algorithm. Two or more“child” solutions are then generated based on the parent by randomlyvarying the value of one or more resource nodes in the network. Thechild solution which is closer to providing a resolution is kept, andthen more child solutions are proposed. This process is repeated untileither a solution is found.

In another embodiment, a more refined version of a genetic algorithm canbe used. In such an embodiment, the initial guess or initial “parent”for the genetic algorithm is formed using only a few nodes in thenetwork. Preferably, the nodes will include each node exhibiting painand any nodes that are part of a correlated pair with a node in pain.Nodes that are part of a correlated pair represent the logical “nearestneighbors” of the nodes in pain in the model network. The initial guessis formed by using the current values for the nodes in pain and anynearest neighbor nodes that are configuration switches. Two or morechild generations are then developed by randomly varying some or all ofthe configuration switches in the initial guess. These changes to theconfiguration switches cause corresponding changes in the indicatornodes based on the correlations from the full network model.

For each generation, the genetic children are evaluated to determine thechild that is closest to resolving the pain. If one of the geneticchildren appears to be closer to a desirable solution, that child isselected as the parent for the next generation. Alternatively, if noneof the children appear to be closer to a desirable solution, the geneticchildren can be discarded and a new set of genetic children can begenerated using the current parent.

In an embodiment, several factors can be considered to determine thechild configuration that will be used to spawn the next generation.First, the indicator node values for the parent and all children arecompared to determine how many nodes are outside the desired operatingrange as well as the level of pain for such nodes. Based on thecomparison, one selection criteria can be whether a child has fewernodes in severe pain as compared to the other children and the parentconfiguration. If two or more configurations have the same number ofnodes in severe pain, the nodes can be compared to determine the nodewith the value closest to the severe pain threshold, as thisconfiguration is closest to eliminating the severe pain condition. Iftwo or more configurations have no nodes in severe pain, theconfiguration with lowest number of nodes in intermediate pain can beselected, or the lowest number of nodes having pain of any type.

Based on the selection criteria, either a child configuration can beselected to spawn the next generation, or the parent generation can beretained and used to randomly spawn a new set of children. Note that theabove selection criteria, as well as other criteria, can be ordered inany desired manner for selecting the parent for each successivegeneration. As an example of another criteria, each child can beevaluated for risk, such as by evaluating any risk nodes within thenetwork. If the risk value for a child generation is above a thresholdvalue, the child can be discarded even though it may otherwise have thelowest number of nodes outside of the desired operating range.

The above process is repeated until a solution is found or a time limitis exceeded. A solution can be defined in various ways. In anembodiment, a solution corresponds to finding a child generation whereno nodes are outside of desired operating ranges. In another embodiment,a solution can correspond to a child generation with no nodes in severeor intermediate pain. In such an embodiment, a maximum number of nodesin mild or low pain can also be required for a solution. However, insome cases the genetic algorithm may not produce a satisfactory solutionwithin a fixed number of iterations or a fixed period of time. If asolution is not found, the genetic algorithm can be restarted with a newinitial parent containing more configuration switches (nodes that can bedirectly manipulated) from the network. For example, the algorithm canbe restarted using nodes in pain, nearest neighbor nodes that areconfiguration switches, and any next-nearest neighbor nodes that areconfiguration switches. This process can be repeated until either asolution is found or until the algorithm fails to find a solution eventhough all nodes from the model network are included in the geneticalgorithm.

After a solution is found, the solution can be implemented on thecorresponding configurable system. To implement the change, the elementsin the configurable system corresponding to each configuration switchare modified based on the proposed changes.

FIG. 4 shows a portion of a sample network 400 having a node operatingoutside of a desired range. In FIG. 4, a sample network containing 6nodes is depicted. Nodes 402 and 406 of the sample network representconfiguration switches that can be directly manipulated, while nodes401, 403, 404 and 405 represent indicator nodes. Each of the nodes inthis sample network has a value of between 0 and 100. This value isshown adjacent to each node in FIG. 4.

Each node in FIG. 4 is also correlated with one or more other nodes.Each correlation is indicated by an arrow, such as correlation 421between node 406 and node 405. A number is listed in parentheses next toeach correlation. This number indicates the correlation value betweentwo nodes as a percentage. For example, correlation 425 between nodes403 and 404 has a correlation value of 100. This means that any changein value for node 403 results in the same change in node 404. Similarly,based on the correlation value for correlation 421, a change in thevalue of node 406 results in a change that is 50% as large in node 405.Correlation values 422, 423, and 424 also show positive correlations,but with values ranging from 10% to 200%. Negative correlation valuesare also possible, as shown for correlations 426 and 427. Note thatalthough all of the correlations shown in FIG. 4 are one waycorrelations, two way correlations are also possible.

FIG. 5 shows an example of using a genetic algorithm to find a newconfiguration that causes all nodes to return to a desired range ofoperating values. The example in FIG. 5 is based on the model networkdepicted in FIG. 4. In this example, there are two threshold criteriafor each indicator node. Each node has a first threshold value of 80, sothat any node with a value above 80 is considered to be outside of thedesired performance range. Second, if three or more nodes have either anode value above 70 or a node value below 30, the system is alsoconsidered to be outside of the desired operating range. Note that 30and 70 represent additional threshold values for each of the nodes. InFIG. 4, node 405 has a node value of 95, which is above the firstthreshold value. In order to return the system to desired operation, thenode value of node 405 needs to be reduced without causing another nodeto exceed its threshold value.

In FIG. 5, the genetic algorithm begins by selecting the two directlyconfigurable nodes, configuration switches 402 and 406, formodification. The current values of nodes 402 and 406 are used as theinitial generation, or parent 505. Two randomly determined variationsare then calculated to form the second generation, children 511 and 512.Child 511 produces a higher node value for node 405, while child 512produces a lower value. As a result, child 512 is selected for spawningthe next generation, children 521 and 522. In child 522, node value 405is still above 80. Child 521 has reduced node value 405 to below 71, butnow node 403 is also above 70 while node 401 is below 30. Because nonode is above its first threshold, child 521 is selected to spawn thenext generation containing children 531 and 532. Node value 405 dropsbelow 70 for child 532, causing this solution to satisfy all of thecriteria for the desired system operating range. This solution caneither be directly implemented in the corresponding configurable system,or a user of the configurable system can be alerted that this solutionis ready and available for implementation.

V. Aggregating Model Network Data

In another embodiment, the invention also provides for the aggregationof past performance data. The data can be aggregated for a singlenetwork, or for multiple model networks representing similar (but notnecessarily identical) configurable systems. A similar but not identicalconfigurable system represents a system of a similar general type thatmay have a different configuration. For example, various SQL serversystems would be considered similar systems, even though differing modelnetworks might be required to model the various SQL systems.

In an embodiment, data for an individual configurable system can beaggregated. In such an embodiment, node value data for the configurablesystem can be accumulated and stored. The data can be in the form ofperiodically accumulated data, or data collected by any other convenientmethod. The data can include both data from time periods when theconfigurable system is operating within desired ranges as well as datafrom time periods when the configurable system has “pain” associatedwith one or more nodes.

In another embodiment, data from one or more configurable systems can beaggregated by a central aggregation system. The aggregation systemcollects node value data for both time periods of operation withindesired ranges as well as data from time periods where one or more nodesare outside of desired operating ranges. Data from configurable systemswith similar but not identical configurations is handled by setting upcategories for various types of nodes. For example, each time data froma new system will be added to the aggregated data, the correlated pairsof nodes from the model network can be categorized, so that the storeddata is classified properly. Preferably, the data from each configurablesystem is converted to a standard format prior to aggregation.

VI. Modifying Node Correlation Values

In still another embodiment, the node correlation values in a modelnetwork can be updated automatically based on an analysis of aggregatednode value data. The aggregated node value data can be datacorresponding to a single configurable system, or the aggregated datacan be from multiple similar configurable systems.

Although the invention allows the correlation value between pairs ofnodes to be updated, the update can only affect the coefficients of thevalue formula. For example, consider a pair of nodes that have acorrelation relation where a change of Δx in a first node produces achange of y=a(Δx)²+b(Δx) change in the second node. The invention allowscoefficients “a” and “b” to be updated, but not the basic quadraticnature of the correlation relation.

To update a correlation value between a pair of nodes, aggregated datafor a configurable system is analyzed. The relationship between thevalues of the node pair is analyzed based on the form of the valueformula used to define the node pair correlation. The analyzed data isused to determine the coefficients in the value formula. Thecoefficients can be determined using a conventional technique, such asleast squares fitting.

VI. Additional Examples

FIG. 6 depicts a flow chart of modifying a configurable system accordingto an embodiment of the invention. In FIG. 6, a model networkcorresponding to a configurable system is provided 610. The modelnetwork includes a plurality of indicator nodes, configuration switches,and optionally risk nodes, with each node being correlated to at leastone other node. An indication is then received 620 that at least oneindicator node or risk node in the model network has values outside of apredetermined operating range. This indicates that the configurablesystem is in “pain” and the performance of the system can be improved bymodifying one or more elemental attributes of the system. Using themodel network, a proposed change to one or more configuration switchesis calculated 630. Elemental attributes of the configuration system arethen modified 640 to correspond to the calculated changes in the one ormore configuration switches.

FIG. 7 depicts another flow chart showing a method of modifying thecorrelation values of a model network according to an embodiment of theinvention. In FIG. 7, node values for a plurality of configurable systemare aggregated 710. These aggregated node values are then analyzed 720to determine relationships between various types of elementalattributes. For at least one of the model networks, revised correlationvalues are calculated for one or more node pairs. An indication is thenreceived 730 that a model network with revised node correlation valueshas at least one indicator node or risk node with values outside of apredetermined operating range. Based on this indication, proposedchanges to one or more configuration switches are calculated 740 usingthe revised node correlation values. These proposed changes are thenprovided 750 to the configurable system. The proposed changes can beimplemented automatically by the configurable system, or a user of theconfigurable system can be notified prior to implementing the changes.

In addition to computer networks, such as SQL networks, the inventioncan also be implemented to improve the performance of other systems,networks, or organizations that are configurable systems. For example,in an embodiment the invention can be used to optimize the performanceof a large business organization. In such an embodiment, a model can beconstructed to model the trade-offs between various nodes andconfiguration switches for the organization (the configurable system).Examples of the indicator nodes in a model of the business organizationcan correspond to various measurable aspects of business performance,such as the amount of inventory, the amount of time inventory spendswaiting in a warehouse, or the amount of time required to produce anitem. Examples of configuration switches in a model for the business cancorrespond to things that can be directly changed, such as the number ofpeople performing a given task or the amount and/or frequency with whichraw materials are delivered to the beginning of a production line. Themethods of the invention, such as the methods shown in FIGS. 6 and 7,can then be used to identify the proper correlation values between nodesin the business model and to propose changes to elemental attributes ofthe organization in order to resolve performance issues.

In another embodiment, the invention can be applied in a medicalsetting. In such an embodiment, a model can be constructed to model thetrade-offs between various nodes and configuration switches for apatient (the configurable system), possibly based on data collected fromother patients. Examples of indicator nodes for the patient model couldinclude blood pressure, heart rate, the O₂ level in the patient's blood,or other measurable values for the patient. Examples of configurationswitches for the patient model could include the number of hours ofsleep, daily total calorie intake, or a medication such as a pill or aninjected drug. The methods of the invention, such as the methods shownin FIGS. 6 and 7, can then be used to identify the proper correlationvalues between nodes in the patient model and to propose changes toelemental attributes in order to resolve health issues.

The following examples provide still other embodiments of the invention.In an embodiment, the invention provides a method for improving theperformance of a configurable system. The method includes providing anetwork corresponding to a configurable system, the network having aplurality of indicator nodes and a plurality of configuration switches,each node having a measurable node value, wherein each node iscorrelated with at least one other node and has a correlation factor foreach correlated node. The method also includes receiving measured nodevalues for at least one indicator node, the measured node values beingoutside of a predetermined node value range. Node values are thencalculated for one or more configuration switches using an iterativeprocess, the calculated configuration switch values leading to a nodevalue within the predetermined node value range for the at least oneindicator node. Based on the calculated node values, one or moreelemental attributes of the configurable system are then modified. In analternative embodiment, the method described above can be implemented asinstructions for a computer processor and stored on a computer readablemedium.

In another embodiment, the invention provides a method for improving theperformance of a configurable system. The method includes aggregatingmeasured node values for networks corresponding to a plurality ofconfigurable systems, each network having at least one indicator node,at least one configuration switch, and at least one node correlationbetween two or more nodes. The aggregated node values are analyzed todetermine a correlation factor for one or more node correlations. Themethod also includes receiving measured node values for at least oneindicator node from a network corresponding to one of the plurality ofconfigurable systems, the measured node values being outside of apredetermined node value range. Node values are then calculated for oneor more configuration switches from the network corresponding to one ofthe plurality of configurable systems using an iterative process, thecalculated node values leading to a node value within the predeterminednode value range for the at least one indicator node based on thecorrelation factors determined by analyzing the aggregated node values.The calculated nodes values for the one or more configuration switchescan then be provided to the configurable system corresponding to thenetwork. In an alternative embodiment, the method described above can beimplemented as instructions for a computer processor and stored on acomputer readable medium.

In still another embodiment, the invention provides a method forimproving the performance of a configurable system. The method includesproviding a network corresponding to a configurable system, the networkhaving a plurality of indicator nodes and a plurality of resource nodes,each node having a measurable node value, wherein each node iscorrelated with at least one other node and has a correlation factor foreach correlated node. The method also includes measuring node valuescorresponding to one or more indicator nodes and one or more resourcenodes. The measured node values are sent to an aggregation service. Oneor more revised correlation factors are then received from theaggregation service, the revised correlation factors being based on themeasured node values. The one or more correlation factors correspondingto the revised correlation factors received from the aggregation serviceare then modified.

Having now fully described this invention, it will be appreciated bythose skilled in the art that the invention can be performed within awide range of parameters within what is claimed, without departing fromthe spirit and scope of the invention.

1. A method for improving the performance of a configurable systemcomprising: providing a model network corresponding to a configurablesystem, the model network having a plurality of indicator nodes and aplurality of configuration switches, each node having a measurable nodevalue, wherein each node is correlated with at least one other node andhas a correlation factor for each correlated node; receiving measurednode values for at least one indicator node, the measured node valuesbeing outside of a predetermined node value range; calculating nodevalues for one or more configuration switches using an iterativeprocess, the calculated configuration switch values leading to a nodevalue within the predetermined node value range for the at least oneindicator node; and modifying one or more elemental attributes of theconfigurable system based on the calculated node values.
 2. The methodof claim 1, wherein the model network further comprises one or more risknodes.
 3. The method of claim 1, wherein the received measured nodevalues outside of the predetermined node value range comprise nodevalues that are greater than a threshold value.
 4. The method of claim1, wherein the received measured node values outside of thepredetermined node value range comprise node values that are less than athreshold value.
 5. The method of claim 1, wherein one or more indicatornodes have a node value range comprising a first upper threshold, asecond upper threshold, and a third upper threshold, the predeterminednode value range comprising node values that are less than the secondupper threshold.
 6. The method of claim 1, wherein one or more indicatornodes have a node value range comprising a first lower threshold, asecond lower threshold, and a third lower threshold, the predeterminednode value range comprising node values that are greater than the secondlower threshold.
 7. The method of claim 1, wherein the configurablesystem corresponds to a network having one or more computers.
 8. Themethod of claim 7, wherein modifying one or more elemental attributes ofthe configurable system comprises automatically modifying one or moreelemental attributes based on the calculated node values.
 9. The methodof claim 1, wherein the configurable system corresponds to a businessorganization.
 10. A method for improving the performance of aconfigurable system comprising: aggregating measured node values formodel networks corresponding to a plurality of configurable systems,each network having at least one indicator node, at least oneconfiguration switch, and at least one node correlation between two ormore nodes; analyzing the aggregated node values to determine acorrelation factor for one or more node correlations; receiving measurednode values for at least one indicator node from a model networkcorresponding to one of the plurality of configurable systems, themeasured node values being outside of a predetermined node value range;calculating node values for one or more configuration switches from themodel network corresponding to one of the plurality of configurablesystems using an iterative process, the calculated node values leadingto a node value within the predetermined node value range for the atleast one indicator node based on the correlation factors determined byanalyzing the aggregated node values; and providing the calculated nodevalues for the one or more configuration switches to the configurablesystem corresponding to the network.
 11. The method of claim 10, whereincalculating node values for one or more configuration switches using aniterative process comprises calculating node values using a geneticalgorithm.
 12. The method of claim 10, further comprising modifying oneor more elemental attributes of the configurable system based on thecalculated node values.
 13. The method of claim 12, wherein theconfigurable system corresponds to a network having one or morecomputers.
 14. The method of claim 13, wherein modifying one or moreelemental attributes of the configurable system comprises automaticallymodifying the one or more elemental attributes.
 15. A method forimproving the performance of a configurable computer network comprising:providing a model network corresponding to a computer network, the modelnetwork having a plurality of indicator nodes and a plurality ofconfiguration switches, each node having a measurable node value,wherein each node is correlated with at least one other node and has acorrelation factor for each correlated node; receiving measured nodevalues for at least one indicator node, the measured node values beingoutside of a predetermined node value range; calculating node values forone or more configuration switches using an iterative process, thecalculated configuration switch values leading to a node value withinthe predetermined node value range for the at least one indicator node;and modifying one or more elemental attributes of the computer networkbased on the calculated node values.
 16. The method of claim 15, whereinthe received measured node values outside of the predetermined nodevalue range comprise node values that are greater than a thresholdvalue.
 17. The method of claim 15, wherein the received measured nodevalues outside of the predetermined node value range comprise nodevalues that are less than a threshold value.
 18. The method of claim 15,wherein one or more indicator nodes have a node value range comprising afirst upper threshold, a second upper threshold, and a third upperthreshold, the predetermined node value range comprising node valuesthat are less than the second upper threshold.
 19. The method of claim15, wherein one or more indicator nodes have a node value rangecomprising a first lower threshold, a second lower threshold, and athird lower threshold, the predetermined node value range comprisingnode values that are greater than the second lower threshold.
 20. Themethod of claim 15, wherein modifying one or more elemental attributesof the configurable system comprises automatically modifying one or moreelemental attributes based on the calculated node values.